﻿namespace RainEngine.SceneManagement
{
    /// <summary>
    /// 为可绘制的节点定义的状态位标志
    /// </summary>
    [System.Flags]
    public enum StatusBits : byte
    {
        /// <summary>
        /// 如果设置为1，则节点是Enabled，在Update过程中会计算剔除。
        /// </summary>
        Enabled = 1, 

        /// <summary>
        /// 如果设置为1，则在Update过程中不会剔除这个节点。只有Enabled设置为1时这个位才起作用。
        /// </summary>
        DisableUpdateCulling = 2,

        /// <summary>
        /// 如果在Update过程中需要对节点进行BoundingFrustum检测，则将这个位设置为1。 
        /// 如果一个节点是Enabled但它的DisableCulling属性为true，那么SCM就不会在更新过程中剔除它。
        /// 如果这个位设置为0，那么在SCM的Draw过程中就需要检测视锥体是否包含这个节点。
        /// </summary>
        UpdatePhaseFrustumChecked = 4,

        /// <summary>
        /// 只有在UpdatePhaseFrustumChecked设置为1的情况下才会用到这个位。如果设置为1，则完全在Update过程中对这个节点进行剔除操作， 
        /// 如果这个节点在相机视锥体之外，则它不可见。如果这个位设置为1，则Draw过程会略过对此节点的剔除操作。
        /// </summary>
        UpdatePhaseFrustumDisjoint = 8,
        
        /// <summary>
        /// 如果设置为0则节点不可见也不计算剔除。如果设置为1，则这个节点是可见的，在Draw过程中会根据其他允许剔除的位对这个节点进行剔除 
        /// </summary>
        Visible  = 16,

        /// <summary>
        /// 如果设置为1，则在Draw过程中不剔除这个节点，它会被添加到renderlist中
        /// </summary>
        DisableCulling = 32,

        /// <summary>
        /// 只有在Visible设置为1时才在Draw中被设置。如果设置为1，则当前节点If set to 1 the node is culled and wannt be rendered.
        /// </summary>
        DrawPhaseCulled = 64,
    }
}
